package wili.attrMapping.core;

import java.io.File;
import java.util.function.Function;

import wili.attrMapping.file.JsonFile;
import wili.attrMapping.file.XmlFile;
import wili.c.Ca;

/**
 * 序列序列所在的文件。
 * 
 * @author weilai2@163.com2@163.com
 */
public interface AttsFile {
	File file();

	int[] getUpdateTimes();

	/**
	 * @param toFile
	 * @param fun    transform fileString before save.
	 */
	void saveToFile(File toFile, Function<String, String> fun);

	public static AttsFile newInst(File file) {
		String fname = file.getName();
		if (fname.endsWith(".json")) {
			return new JsonFile(file);
		} else if (fname.endsWith(".xml")) {
			return XmlFile.newInst(file);
		} else {
			Ca.asert(false, "todo: " + fname);
			return null;
		}
	}
}